package com.heima.leadnews.artlite.controller;


import com.heima.leadnews.artlite.service.ApArticleService;
import com.heima.model.common.article.dto.*;
import com.heima.model.common.article.pojo.ApArticle;
import com.heima.model.common.article.vo.ApArticleVo;
import com.heima.model.common.article.vo.LoadArticleBehaviorVo;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.wemedia.dto.WmNewsADto;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 文章信息表，存储已发布的文章 前端控制器
 * </p>
 *
 * @author author
 * @since 2023-05-31
 */
@RestController
@RequestMapping("/api/v1/article")
public class ApArticleController {

    @Autowired
    private ApArticleService apArticleService;

    /**
     * 点击某个频道，展示该频道最新的3个文章
     * @param dto
     * @return
     */
    @PostMapping("/load")
    @ApiOperation("#点击某个频道，展示该频道最新的3个文章")
    public ResponseResult<List<ApArticle>> load(@RequestBody ApArticleDto dto){
      return apArticleService.load(dto);
    }

    /**
     * 向上刷新频道，展示该频道最新的3个文章
     * @param dto
     * @return
     */
    @PostMapping("/loadmore")
    public ResponseResult<List<ApArticle>> loadMore(@RequestBody ApArticleMinDto dto) {
        return apArticleService.loadMore(dto);
    }

    /**
     * 向下刷新频道，展示该频道最新的3个文章
     * @param dto
     * @return
     */
    @PostMapping("/loadnew")
    public ResponseResult<List<ApArticle>> loadnew(@RequestBody ApArticleAMaxDto dto) {
        return apArticleService.loadnew(dto);
    }

    /**
     * 保存用户端文章信息
     * 内部接口，被调用
     * @param dto
     * @return
     */
   @PostMapping("/save")
    public ResponseResult<Long> save(@RequestBody WmNewsADto dto){

        return apArticleService.saveArticle(dto);
   }

    /**
     * 更新文章详情页面地址
     * @return
     */
   @GetMapping("/update")
    public ResponseResult updateStaticUrl(@RequestParam("articleId") Long articleId,
                                          @RequestParam("url") String url){
      return  apArticleService.updateStaticUrl(articleId,url);
   }

    /**
     * 查询所有文章
     * 内部接口，被search服务远程调用
     * @return
     */
   @GetMapping("/findAll")
    public ResponseResult<List<ArticleDocDto>> findAll(){

       return apArticleService.findAll();
   }

    /**
     * 根据文章id 查询文章信息
     * 内部接口，被search服务远程调用
     * @return
     */
    @GetMapping("/findById/{id}")
    public ResponseResult<ArticleDocDto> findById(@PathVariable Long id){

        return apArticleService.findById(id);
    }

    /**
     * 5 加载文章行为-数据回显
     */
    @PostMapping("/load_article_behavior")
    public  ResponseResult<LoadArticleBehaviorVo>  loadArticleBehavior(@RequestBody loadArticleBehaviorDto dto){

        return apArticleService.loadArticleBehavior(dto);
    }
    /**
     *用户点击某个频道，展示该频道最新的10个热点文章
     */
    @GetMapping("/hot/{chanalId}")
    public  ResponseResult<List<ApArticleVo>> loadHotArtaic(@PathVariable("channelId") String channelId){

        return apArticleService.loadHotArtaic(channelId);
    }
}
